// 路由鉴权 导航守卫等
import router from '@/router'
import nprogress from 'nprogress'
import 'nprogress/nprogress.css'
import useUserStore from './store/modules/user'
// import axios from 'axios';
import pinia from './store'
let userStore = useUserStore(pinia) // 在组件外需要传入pinia仓库
// 全局前置守卫
router.beforeEach(async (to, from, next) => {
  nprogress.start()
  // let userStore = useUserStore(pinia)

  // console.log(userStore);
  let authenticated = userStore.accessToken // 如果有token表示登录成功了
  let username = userStore.username
  // console.log(authenticated);
  if (authenticated) {
    // 已登录
    if (to.path === '/login') {
      // 登录后想访问login，就回首页
      next({ path: '/' })
    } else {
      // 有用户信息，就是token在有效期内
      if (username) {
        next()
      } else {
        //token失效或手动删除了
        try {
          // 获取用户信息成功
          await userStore.userInfo()
          next()
        } catch (error) {
          // token过期需要尝试刷新
          // 1、可以刷新token
          // 2、刷新也失败重新登陆

          // console.log(error);   这部分放到响应拦截器中
          // try {
          //   // 尝试用token去刷新，并对token进行重置
          //   await userStore.refreshTokenAction(error.config)
          //   await userStore.userInfo()
          //   next()
          // } catch (error) {
          userStore.logout() // 当作登录，否则会被认为是已登录，重复跳转首页
          // console.log(error);
          next({ path: '/login' })
          // console.log('zhixing');
          // }
        }
      }
    }
  } else {
    // 未登录
    if (to.path === '/login') {
      // 未登录 且要去登录页
      next()
    } else {
      // 未登录要访问非登录页
      next({ path: '/login', query: { redirect: to.path } })
    }
  }
})

// 全局后置守卫
router.afterEach((to, from) => {
  nprogress.done()
})
